/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package matematicadiscretaxml;

/**
 *
 * @author diego
 */
public class Igual {

    ObjetoQuery[][] matriz_1;

    public Igual()
    {

    }

    public Igual(ObjetoQuery[][] _matriz_1)
    {
        matriz_1 = _matriz_1;
    }

    public ObjetoQuery[][] generarMatrizIgualIdentificadores(ObjetoQuery ident_izq, ObjetoQuery ident_der)
    {
        ObjetoQuery[][] matriz_auxiliar = new ObjetoQuery[matriz_1.length][matriz_1[0].length];
        ObjetoQuery[][] matriz_igual = new ObjetoQuery[matriz_1.length][matriz_1[0].length];

        boolean bandera_encontrado_izq = false;
        int i_aux = 0;
        
        if(matriz_1.length != 0)
        {
            for(int i = 0; i<matriz_1.length; i++)
            {
                for(int j = 0; j<matriz_1[0].length; j++)
                {
                    if(bandera_encontrado_izq == false)
                    {
                        if(    matriz_1[i][j].getTabla().toLowerCase().equals(ident_izq.getTabla().toLowerCase())
                        && matriz_1[i][j].getColumna().toLowerCase().equals(ident_izq.getColumna().toLowerCase()) )
                        {
                            for(int k = 0; k<matriz_1[0].length; k++)
                            {
                                if(k != j)
                                {
                                    if(    matriz_1[i][k].getTabla().toLowerCase().equals(ident_der.getTabla().toLowerCase())
                                    && matriz_1[i][k].getColumna().toLowerCase().equals(ident_der.getColumna().toLowerCase())
                                    && matriz_1[i][k].getObjeto().equals(matriz_1[i][j].getObjeto()) )
                                    {
                                        for(int n = 0; n<matriz_1[0].length; n++)
                                        {
                                            matriz_auxiliar[i_aux][n] = matriz_1[i][n];
                                        }
                                        i_aux++;
                                    }
                                }
                            }
                            bandera_encontrado_izq = true;
                        }
                    }
                }
                bandera_encontrado_izq = false;
            }
        }

        matriz_igual = new ObjetoQuery[i_aux][matriz_auxiliar[0].length];
        for(int i = 0; i<i_aux; i++)
        {
            for(int j = 0; j<matriz_auxiliar[0].length; j++)
            {
                if(matriz_auxiliar[i][j] != null)
                {
                    matriz_igual[i][j] = matriz_auxiliar[i][j];
                    System.out.print( ((ObjetoQuery)matriz_igual[i][j]).getObjeto().toString()+" | ");
                }
            }
            System.out.println("");
        }

        return matriz_igual;
    }

    public ObjetoQuery[][] generarMatrizIgualIdentConstCad(ObjetoQuery ident, String constante_cadena)
    {
        ObjetoQuery[][] matriz_auxiliar = new ObjetoQuery[matriz_1.length][matriz_1[0].length];
        ObjetoQuery[][] matriz_igual = new ObjetoQuery[matriz_1.length][matriz_1[0].length];

        boolean bandera_encontrado_izq = false;
        int i_aux = 0;

        if(matriz_1.length != 0)
        {
            for(int i = 0; i<matriz_1.length; i++)
            {
                for(int j = 0; j<matriz_1[0].length; j++)
                {
                    if(bandera_encontrado_izq == false)
                    {
                        if(matriz_1[i][j].getTabla().toLowerCase().equals(ident.getTabla().toLowerCase())
                        && matriz_1[i][j].getColumna().toLowerCase().equals(ident.getColumna().toLowerCase())
                        && matriz_1[i][j].getObjeto().toString().equals(constante_cadena) )
                        {
                            for(int n = 0; n<matriz_1[0].length; n++)
                            {
                                matriz_auxiliar[i_aux][n] = matriz_1[i][n];
                            }
                            i_aux++;
                            bandera_encontrado_izq = true;
                        }
                    }
                }
                bandera_encontrado_izq = false;
            }
        }

        matriz_igual = new ObjetoQuery[i_aux][matriz_auxiliar[0].length];
        for(int i = 0; i<i_aux; i++)
        {
            for(int j = 0; j<matriz_auxiliar[0].length; j++)
            {
                if(matriz_auxiliar[i][j] != null)
                {
                    matriz_igual[i][j] = matriz_auxiliar[i][j];
                    System.out.print( ((ObjetoQuery)matriz_igual[i][j]).getObjeto().toString()+" | ");
                }
            }
            System.out.println("");
        }

        return matriz_igual;
    }

    public ObjetoQuery[][] generarMatrizIgualIdentConstNum(ObjetoQuery ident, double constante_num)
    {
        ObjetoQuery[][] matriz_auxiliar = new ObjetoQuery[matriz_1.length][matriz_1[0].length];
        ObjetoQuery[][] matriz_igual = new ObjetoQuery[matriz_1.length][matriz_1[0].length];

        boolean bandera_encontrado_izq = false;
        int i_aux = 0;

        if(matriz_1.length != 0)
        {
            for(int i = 0; i<matriz_1.length; i++)
            {
                for(int j = 0; j<matriz_1[0].length; j++)
                {
                    if(bandera_encontrado_izq == false)
                    {
                        if(  matriz_1[i][j].getTabla().toLowerCase().equals(ident.getTabla().toLowerCase())
                          && matriz_1[i][j].getColumna().toLowerCase().equals(ident.getColumna().toLowerCase())
                          && Double.parseDouble(matriz_1[i][j].getObjeto().toString()) == constante_num )
                        {
                            for(int n = 0; n<matriz_1[0].length; n++)
                            {
                                matriz_auxiliar[i_aux][n] = matriz_1[i][n];
                            }
                            i_aux++;
                            bandera_encontrado_izq = true;
                        }
                    }
                }
                bandera_encontrado_izq = false;
            }
        }

        matriz_igual = new ObjetoQuery[i_aux][matriz_auxiliar[0].length];
        for(int i = 0; i<i_aux; i++)
        {
            for(int j = 0; j<matriz_auxiliar[0].length; j++)
            {
                if(matriz_auxiliar[i][j] != null)
                {
                    matriz_igual[i][j] = matriz_auxiliar[i][j];
                    System.out.print( ((ObjetoQuery)matriz_igual[i][j]).getObjeto().toString()+" | ");
                }
            }
            System.out.println("");
        }

        return matriz_igual;
    }


}
